var Cuentas =
{
	modeloLocal: new Rin.Model
	({
		lista: [ ], lista_vacia: 1,
		total: 0, pagina: 1, paginas: 0, count: 20, _count: 20,
		banco: "", cuenta: ""
	}),

	cancelarEditarCuenta: function ()
	{
		$("#frmEditarCuenta").slideUp("fast");
	},

	cancelarRegistroCuenta: function ()
	{
		$("#frmRegistroCuenta").slideUp("fast");
	},

	expandirRegistroCuenta: function ()
	{
		$("#frmRegistroCuenta").slideDown("fast");
	},

	borrarCuenta: function (id_cuenta)
	{
		Ajax.request ("code/api/c_cuentas.php", { op: "eliminar", cuenta: id_cuenta }, function (r)
		{
			Cuentas.cargarLista();
		});
	},

	editarCuenta: function (id_cuenta)
	{
		var lista = Cuentas.modeloLocal.get("lista");

		for (var i = 0; i < lista.length; i++)
		{
			if (lista[i].cuenta == id_cuenta)
			{
				Cuentas.frmEditarCuenta.setFieldValues ({
					cuenta: lista[i].cuenta,
					banco: lista[i].id_banco,
					inicial: lista[i].saldo_ini,
					actual: lista[i].saldo_act
				});

				$("#frmEditarCuenta").slideDown("fast");
				break;
			}
		}
	},

	pagAnterior: function ()
	{
		var m = this.modeloLocal;

		if (m.get("pagina") <= 1) return;
		m.set("pagina", m.get("pagina") - 1);

		this.filtrarLista();
	},

	pagSiguiente: function ()
	{
		var m = this.modeloLocal;

		if (m.get("pagina") >= m.get("paginas")) return;
		m.set("pagina", m.getInt("pagina") + 1);

		this.filtrarLista();
	},

	exportar: function (full)
	{
		var m = this.modeloLocal.get();

		var data = { op: "exportar", offset: (m.pagina-1)*m.count, count: m.count, banco: m.banco, cuenta: m.cuenta, full: full ? 1 : 0 };
		var url = "code/api/c_cuentas.php?" + $.param(data);

		window.open (url);
	},

	filtrarLista: function ()
	{
		var m = this.modeloLocal.get();

		Ajax.request ("code/api/c_cuentas.php", { op: "listar", offset: (m.pagina-1)*m.count, count: m.count, banco: m.banco, cuenta: m.cuenta }, function (r)
		{
			Cuentas.modeloLocal.set ("lista_vacia", r.datos.length == 0 ? 1 : 0);
			Cuentas.modeloLocal.set ("lista", r.datos);
		});
	},

	cargarLista: function ()
	{
		var m = this.modeloLocal.get();

		if (m.count != m._count)
			m.pagina = 1;

		Ajax.request ("code/api/c_cuentas.php", { op: "contar", banco: m.banco, cuenta: m.cuenta }, function (r)
		{
			if (r.total == m.total && m.count == m._count) return;

			Cuentas.modeloLocal.set ({
				paginas: Math.floor ((parseInt(r.total) + parseInt(m.count) - 1) / m.count),
				total: r.total,
				pagina: 1
			});
		});

		this.filtrarLista();
	},

	cargarBancos: function ()
	{
		Ajax.request ("code/api/c_cuentas.php", { op: "bancos" }, function (r)
		{
			Cuentas.modeloLocal.set ({ bancos: r.datos });
		});
	},
};

//------------------------------------------------------------------------------.
Cuentas.frmRegistroCuenta = new AsyncForm ($("#frmRegistroCuenta"));
Cuentas.frmRegistroCuenta.onFormSubmitted = function ()
{
	$("#frmRegistroCuenta").slideUp("fast");

	Cuentas.cargarLista();
	Cuentas.frmRegistroCuenta.setFieldValues (null);
};

Cuentas.frmEditarCuenta = new AsyncForm ($("#frmEditarCuenta"));
Cuentas.frmEditarCuenta.onFormSubmitted = function ()
{
	$("#frmEditarCuenta").slideUp("fast");

	Cuentas.cargarLista();
	Cuentas.frmEditarCuenta.setFieldValues (null);
};

Cuentas.cargarLista();
Cuentas.cargarBancos();
